package br.com.remedioCerto.activity;

import java.util.Calendar;

import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import br.com.remedioCerto.R;
import br.com.remedioCerto.model.Estoque;

public class EstoqueForm extends DialogFragment {
	
	private Estoque estoque;
	private EditText qtdPorCaixa;
	private EditText qtdAtual;
	private DatePicker validade;
	private Integer posicao;
	

	public static DialogFragment newInstance(Estoque estoque, Integer posicao) {
		EstoqueForm p = new EstoqueForm();
        Bundle args = new Bundle();
        args.putSerializable("estoqueEdicao", estoque);
        args.putSerializable("posicao", posicao);
        p.setArguments(args);
        return p;
	}

	@Override
	public Dialog onCreateDialog(Bundle savedInstanceState) {
		AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
		LayoutInflater inflater = getActivity().getLayoutInflater();
		View view = inflater.inflate(R.layout.estoque_form, null);
		
		builder.setView(view);
		builder.setIcon(R.drawable.ic_action_user);
		builder.setTitle("Estoque");
		builder.setPositiveButton("Salvar", null);
		builder.setNegativeButton("Cancelar",null);
		
		carregaObjetos(view);

		Bundle arg = getArguments();
		this.estoque = (Estoque)arg.getSerializable("estoqueEdicao");
		this.posicao = (Integer)arg.getSerializable("posicao");
		if(this.estoque != null){
			populaTela();
		}else{
			this.estoque = new Estoque();
		}
		
		return builder.create();
	}
		
	@Override
	public void onStart(){
	    super.onStart();    
	    AlertDialog d = (AlertDialog)getDialog();
	        Button positiveButton = (Button) d.getButton(Dialog.BUTTON_POSITIVE);
	        positiveButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                	if(recuperaInformacaoTela()){
        				((RemedioForm)getActivity()).dilogResult(estoque, posicao);
        				dismiss();
        			}
                }
            });
	}
	
	
	
	private void carregaObjetos(View view){
		this.qtdPorCaixa = (EditText) view.findViewById(R.id.estoque_qtdCaixa);
		this.qtdAtual = (EditText) view.findViewById(R.id.estoque_qtdAtual);
		this.validade = (DatePicker) view.findViewById(R.id.estoque_validade);
		this.validade.setMinDate(Calendar.getInstance().getTimeInMillis()-1000);
	}
	
	private void populaTela() {
		this.qtdPorCaixa.setText(this.estoque.getQuantidadeCaixa().toString());
		this.qtdAtual.setText(this.estoque.getQuantidadeAtual().toString());
		this.validade.updateDate(estoque.getValidade().get(Calendar.YEAR), estoque.getValidade().get(Calendar.MONTH), estoque.getValidade().get(Calendar.DAY_OF_MONTH));
	}
	
	private boolean recuperaInformacaoTela(){
		boolean retorno = true;
		if(this.qtdPorCaixa.getText().toString().equals("")){
			this.qtdPorCaixa.setError("Campo obrigatorio");
			retorno = false;
		}else{
			estoque.setQuantidadeCaixa(Integer.parseInt(qtdPorCaixa.getText().toString()));
		}
		
		if(this.qtdAtual.getText().toString().equals("")){
			this.qtdAtual.setError("Campo obrigatorio");
			retorno = false;
		}else{
			estoque.setQuantidadeAtual(Double.parseDouble(qtdAtual.getText().toString()));
		}
		
		estoque.setValidade(Calendar.getInstance());
		estoque.getValidade().set(Calendar.DAY_OF_MONTH, validade.getDayOfMonth());
		estoque.getValidade().set(Calendar.MONTH, validade.getMonth());
		estoque.getValidade().set(Calendar.YEAR, validade.getYear());
		return retorno;
	}

}
